The advantages of virtual machine technology have become widely recognized. Among these advantages is the ability to run multiple virtual machines on a single host platform. This ability makes better use of the capacity of the hardware while still ensuring that each user enjoys the features of a “complete” computer.
Generally, a virtualization system includes an operating system, which is referred to as a commodity operating system or console operating system (COS), and a virtualization kernel that acts as a second operating system. The COS is used to initially boot the system. After booting, the virtualization kernel is loaded and displaces the COS from the system level. As a result, the virtualization kernel itself directly accesses the physical resources of the computer. All requests by virtual machines, for use of system resources such as I/O devices, then pass via the virtualization kernel. System resources are divided into those that are controlled exclusively by the kernel, those that the kernel allows the COS to handle exclusively, and those for which control is shared by the kernel and the COS.
The division of the system resources results in there being two sets of drivers on the system—one set for the COS and one for the virtualization kernel. Inefficiencies arise related to having to maintain two sets of drivers and contribute to shortcomings in known virtualization environments.